package com.rubiksillusions;

public final class Utilities {
	public Utilities() {
		
	}
	
	public static RubiksCube getSolvedRubiksCube() {
		return new RubiksCube();
	}
	
	public static String getScrambledCubeString(String facelets) {
		RubiksCube rubiksCube = new RubiksCube(facelets);
		rubiksCube.scramble(true);
		return rubiksCube.getFaceletsString();
	}
	
	public static String getExecutedMovesString(String facelets, String moves) {
		RubiksCube rubiksCube = new RubiksCube(facelets);
		rubiksCube.executeMovesList(moves, true);
		return rubiksCube.getFaceletsString();
	}
	
	public static String getMovesResult(String faceletsString, String moves) {
		RubiksCube rubiksCube = new RubiksCube(faceletsString);
		rubiksCube.executeMovesList(moves, true);
		return rubiksCube.getFaceletsString();
	}
	
	public static String getLayerByLayerMoves(String faceletsString) {
		RubiksCube rubiksCube = new RubiksCube(faceletsString);
		Solver solver = new Solver(rubiksCube, new LayerByLayerAlgorithm());
		return solver.getMovesList();
	}
	
	public static String getSolveCrossMoves(String faceletsString) {
		RubiksCube rubiksCube = new RubiksCube(faceletsString);
		Solver solver = new Solver(rubiksCube, new MakeCrossAlgorithm());
		return solver.getMovesList();
	}
	
	public static String getPositionThreeCornersOfFirstLayerMoves(String faceletsString) {
		RubiksCube rubiksCube = new RubiksCube(faceletsString);
		Solver solver = new Solver(rubiksCube, new PositionThreeCornersOfFirstLayerAlgorithm());
		return solver.getMovesList();
	}
}
